从HTTP服务器下载AssetBundle(GET)

要从远程服务器下载AssetBundle,可以使用UnityWebRequest.GetAssetBundle。此函数将数据流式传输到内部缓冲区,该缓冲区解码并解压缩工作线程上的AssetBundle数据。

函数的参数有几种形式。以最简单的形式,它只需要从中下载AssetBundle的URL。您可以选择提供校验和来验证下载数据的完整性。

或者,如果您希望使用AssetBundle缓存系统,则可以提供版本号或Hash128数据结构。这些与版本号相同或Hash128 objects通过旧系统提供WWW.LoadFromCacheOrDownload

细节

    • 该函数创建一个UnityWebRequest并将目标URL设置为提供的URL参数。它还将HTTP动词设置为GET,但不设置其他标志或自定义标题。
    • 该功能附加一个DownloadHandlerAssetBundle到UnityWebRequest。这个下载处理程序有一个特殊的assetBundle属性,一旦足够的数据被下载和解码以允许访问AssetBundle内部的资源,它就可以用来提取AssetBundle。
    • 如果您提供版本号或Hash128对象作为参数,它也将这些参数传递给DownloadHandlerAssetBundle。下载处理程序然后使用缓存系统。

    using UnityEngine;
    using UnityEngine.Networking;
    using System.Collections;

    public class MyBehaviour : MonoBehaviour {
        void Start() {
            StartCoroutine(GetAssetBundle());
        }

        IEnumerator GetAssetBundle() {
            UnityWebRequest www = UnityWebRequest.GetAssetBundle("http://www.my-server.com/myData.unity3d");
            yield return www.SendWebRequest();

            if(www.isNetworkError || www.isHttpError) {
                Debug.Log(www.error);
            }
            else {
                AssetBundle bundle = DownloadHandlerAssetBundle.GetContent(www);
            }
        }
    }

🔚